package br.com.android.aluno.model;

import java.io.File;
import java.util.List;

import org.json.JSONException;
import org.json.JSONObject;

import br.com.android.aluno.enums.Sexo;
import br.com.android.aluno.util.UtilFile;


public class Aluno {

	private int id = 0;
	private String nome = "";
	private String telefone = "";
	private String email = "";
	private String endereco = "";
	private String curso = "";
	private File fotoPath = null;
	private Sexo sexo = Sexo.MASCULINO;
	private boolean isMatriculado = false;

	public Aluno() {
		
	}
	
	public Aluno(JSONObject json) {
		try {
			if (!json.isNull("id")) {
				setId(Integer.parseInt(json.getString("id")));
			}
			if (!json.isNull("nome")) {
				setNome(json.getString("nome"));
			}
			if (!json.isNull("telefone")) {
				setTelefone(json.getString("telefone"));
			}
			if (!json.isNull("email")) {
				setEmail(json.getString("email"));
			}
			if (!json.isNull("endereco")) {
				setEndereco(json.getString("endereco"));
			}
			if (!json.isNull("curso")) {
				setCurso(json.getString("curso"));
			}
			if (!json.isNull("sexo")) {
				setSexo(json.getString("sexo").equals("MASCULINO") ? Sexo.MASCULINO
						: Sexo.FEMININO);
			}
			if (!json.isNull("matriculado")) {
				setMatriculado(json.getString("matriculado").equals("true") ? true
						: false);
			}
			if (!json.isNull("path")) {
				setFotoPath(new File(json.getString("path")));
			}
			
		} catch (NumberFormatException e) {
			e.printStackTrace();
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}
	
	public Aluno(File txt) {
		List<String> list = UtilFile.lerTxt(txt);
		String id = list.get(0).split("=")[1];
		String nome = list.get(1).split("=")[1];
		String tel = list.get(2).split("=")[1];
		String email = list.get(3).split("=")[1];
		String end = list.get(4).split("=")[1];
		String curso = list.get(5).split("=")[1];
		String sexo = list.get(6).split("=")[1];
		String matriculado = list.get(7).split("=")[1];
		String path = list.get(8).split("=")[1];
		
		setId(Integer.parseInt(id));
		setNome(nome);
		setTelefone(tel);
		setEmail(email);
		setEndereco(end);
		setCurso(curso);
		setSexo(sexo.equals("MASCULINO") ? Sexo.MASCULINO : Sexo.FEMININO);
		setMatriculado(matriculado.equals("true") ? true : false);
		setFotoPath(new File(path));
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public String getCurso() {
		return curso;
	}

	public void setCurso(String curso) {
		this.curso = curso;
	}

	public Sexo getSexo() {
		return sexo;
	}

	public void setSexo(Sexo sexo) {
		this.sexo = sexo;
	}

	public boolean isMatriculado() {
		return isMatriculado;
	}

	public void setMatriculado(boolean isMatriculado) {
		this.isMatriculado = isMatriculado;
	}

	public File getFotoPath() {
		return fotoPath;
	}

	public void setFotoPath(File fotoPath) {
		this.fotoPath = fotoPath;
	}

	public String toTxt() {
		StringBuffer buffer = new StringBuffer();
		buffer.append("Id=" + getId());
		buffer.append("\n");
		buffer.append("Nome=" + getNome());
		buffer.append("\n");
		buffer.append("Telefone=" + getTelefone());
		buffer.append("\n");
		buffer.append("Email=" + getEmail());
		buffer.append("\n");
		buffer.append("Endereco=" + getEndereco());
		buffer.append("\n");
		buffer.append("Curso=" + getCurso());
		buffer.append("\n");
		buffer.append("Sexo=" + getSexo());
		buffer.append("\n");
		buffer.append("Matriculado=" + isMatriculado());
		buffer.append("\n");
		buffer.append("Path=" + getFotoPath());
//		buffer.append("\n");
//		buffer.append("-----------------------------------------------------------");
//		buffer.append("\n");
		
		return buffer.toString();
	}
	
	public JSONObject toJson() throws JSONException {
		JSONObject json = new JSONObject();

		if (this.id != -1) {
			json.put("id", String.valueOf(getId()));
		} if (getNome() != null && !getNome().equals("")) {
			json.put("nome", getNome());
		} if (getTelefone() != null && !getTelefone().equals("")) {
			json.put("telefone", getTelefone());
		} if (getEmail() != null && !getEmail().equals("")) {
			json.put("email", getEmail());
		} if (getEndereco() != null && !getEndereco().equals("")) {
			json.put("endereco", getEndereco());
		} if (getCurso() != null && !getCurso().equals("")) {
			json.put("curso", getCurso());
		} if (getSexo() != null) {
			json.put("sexo", String.valueOf(getSexo()));
		} if (getFotoPath() != null && !getFotoPath().equals("")) {
			json.put("path", getFotoPath());
		} 

		json.put("matriculado", String.valueOf(isMatriculado()));

		return json;
	}

	@Override
	public String toString() {
		StringBuffer buffer = new StringBuffer();
		buffer.append("Id: " + getId());
		buffer.append("\n");
		buffer.append("Nome: " + getNome());
		buffer.append("\n");
		buffer.append("Telefone: " + getTelefone());
		buffer.append("\n");
		buffer.append("Email: " + getEmail());
		buffer.append("\n");
		buffer.append("Endereco: " + getEndereco());
		buffer.append("\n");
		buffer.append("Curso: " + getCurso());
		buffer.append("\n");
		buffer.append("Foto: " + getFotoPath());
		buffer.append("\n");
		buffer.append("Sexo: " + getSexo());
		buffer.append("\n");
		buffer.append("Matriculado: " + isMatriculado());
		buffer.append("\n");
		buffer.append("-----------------------------------------------------------");
		buffer.append("\n");
		
		return buffer.toString();
	}
}
